

#比如创建一个类（Animal）【动物类】，类里有属性（名称，颜色，年龄，性别），类方法（会叫，会跑）
class Animal:
    #静态属性
    type = "狗狗"
    colour = '棕色'
    age = "2"
    gender = "雄性"
    def __init__(self,type,colour,age,gender):
        self.type = type
        self.colour = colour
        self.age = age
        self.gender = gender

        pass
    #动态属性
    def yell(self):
        print("yelling")
    def run(self):
        print(f"{self.type} is running")
    def eat(self):
        print('eating')


a1 = Animal(type='狗狗',colour='棕色',age='2',gender='雄性')
print(a1.type)
a1.yell()

a2 = Animal(type='黄牛',colour='黄色',age='1',gender='雌性')
print(a2.type)
a2.yell()
print(a2.age)
print(a2.run())
a2.eat()
#创建子类【猫】，继承【动物类】，
#
# 复写父类的__init__方法，继承父类的属性，
#
# 添加一个新的属性，毛发=短毛，
#
# 添加一个新的方法， 会捉老鼠，
# 复写父类的‘【会叫】的方法，改成【喵喵叫】
class Cat(Animal):

     #复写父类的__init__方法，继承父类的属性，
     def __init__(self,type,colour,age,gender,hair):
         super().__init__(type,colour,age,gender)
         self.hair = hair
       # 添加一个新的方法， 会捉老鼠，
     def catch(self):
         print(f"{self.type} can catch mice")
         # 复写父类的‘【会叫】的方法，改成【喵喵叫】
     def yell(self):
         return "喵喵叫"

     #创建子类【狗】，继承【动物类】，
     #
     # 复写父类的__init__方法，继承父类的属性，
     #
     # 添加一个新的属性，毛发=长毛，
     #
     # 添加一个新的方法， 会看家，
     #
     # 复写父类的【会叫】的方法，改成【汪汪叫】
class Dog(Animal):
    def __init__(self,type,colour,age,gender,hair):
        super().__init__(type,colour,age,gender)
        self.hair=hair
    def housekeeping(self):
        print(f"{self.type} can housekeeping")
    def yell(self):
        return "汪汪叫"




cat1 = Cat(type='猫咪',colour='黑色',age='2',gender='雄性',hair="短毛")
print(cat1.colour)
cat1.catch()
print(cat1.hair)
print(cat1.yell())
d1=Dog(type='狗',colour='白色',age='2',gender='雄性',hair="长毛")
print(d1.hair)
d1.housekeeping()
print(d1.yell())


import yaml

with open("../datas/animal.yaml",encoding="utf-8") as f:
    datas = yaml.safe_load(f)
    print(datas)



print(datas["cat1"])
print(datas["dog2"])

























